PlantUML シーケンス図
基本的な文法
<名前1> -> <名前1>: <メッセージ>でシーケンスを記述できる
宣言した順番に表示される
->は実線の矢印、-->は破線の矢印になる
code:sequence.puml
@startuml
A -> B: メッセージ
B --> A: メッセージ
@enduml
↓
https://scrapbox.io/files/63410ccf7b9228001d6a01d8.png
分類子
様々な分類子を指定できる
code:sequence-classfier.puml
@startuml
participant パーティシパント as P
actor アクター as A
boundary バウンダリー as B
control コントロール as Cont
entity エンティティ as E
database データベース as D
collections コレクション as Coll
queue キュー as Q
@enduml
↓
https://scrapbox.io/files/6341094038f8cc001d8a83e6.png
自分自身にメッセージ・改行
自分自身に向けるように定義すれば自分自身にメッセージを送れる
\nで改行できる
code:sequence-self.puml
@startuml
A -> A : 自分自身にメッセージ\n複数行もOK
@enduml
↓
https://scrapbox.io/files/63410b641e470a001db0d8d1.png
番号付け
autonumberを使うと、番号をつけることができる
autonumber [開始] [増分]
code:sequence-autonumber.puml
@startuml
autonumber
A -> B: メッセージ
A <-- B: メッセージ
A -> B: メッセージ
A <-- B: メッセージ
@enduml
↓
https://scrapbox.io/files/63410e1791466b001d6d4730.png
autonumber stopで番号付けを止めたり、
autonumber resumeで番号付けを途中から再開できる
code:sequence-autonumber-stop.puml
@startuml
autonumber
A -> B: メッセージ
autonumber stop
A <-- B: メッセージ
autonumber resume
A -> B: メッセージ
autonumber stop
A <-- B: メッセージ
@enduml
↓
https://scrapbox.io/files/63410e914af526001d0b9751.png
小数点などで区切って、そこから増加させることもできる
.、,、;、:
code:sequence-autonumber-decimal.puml
@startuml
'A.B.C
autonumber 1.1.1
Alpha -> Bravo : メッセージ
Alpha <-- Bravo : メッセージ
autonumber inc B
Alpha -> Bravo : メッセージ
Alpha <-- Bravo : メッセージ
autonumber inc A
Alpha -> Bravo : メッセージ
Alpha <-- Bravo : メッセージ
autonumber inc B
Alpha -> Bravo : メッセージ
Alpha <-- Bravo : メッセージ
@enduml
↓
https://scrapbox.io/files/6341110dad815f0023914f66.png
タイトル・ヘッダー・フッター
headerでヘッダー
footerでフッター
titleでタイトルを設定できる
全ページ共通設定となる
※%page%で現在のページ数、%lastpage%でページ数を表示できる
code:sequence-title-header-footer.puml
@startuml
header ページヘッダー
footer %page% / %lastpage%
title ページタイトル
A -> B : message 1
A <- B : message 2
@enduml
↓
https://scrapbox.io/files/634113358efb20001d656f0c.png
図の分割
newpageで図の分割ができる
code:sequence-separate.puml
@startuml
footer %page% / %lastpage%
title Hoge
A -> B : message 1
A <- B : message 2
newpage
A -> B : message 1
A <- B : message 2
@enduml
↓
https://scrapbox.io/files/6341149b1cf623001d458f2f.png https://scrapbox.io/files/634114a0f19a7a001f2c8198.png
ライフライン
activateでライフラインを開始、deactivateでライフラインを終了できる
code:sequence-lifeline.puml
@startuml
A -> B : メッセージ
activate B
B -> C : メッセージ
activate C
B <-- C : メッセージ
deactivate C
A <-- B : メッセージ
deactivate B
@enduml
↓
https://scrapbox.io/files/6341188f22fcc600207647a3.png
ライフラインは入れ子にできる
code:sequence-lifeline-nest.puml
@startuml
A -> B : メッセージ
activate B
B -> B : メッセージ
activate B
deactivate B
B -> C : メッセージ
activate C
B <-- C : メッセージ
deactivate C
A <-- B : メッセージ
deactivate B
@enduml
↓
https://scrapbox.io/files/634118f0ad815f002391a45e.png
autoactivateで自動的にライフラインを定義できる
returnで応答を返すことができる
code:sequence-lifeline-autoactivate.puml
@startuml
autoactivate on
A -> B : メッセージ
B -> C : メッセージ
return メッセージ
return メッセージ
@enduml
↓
https://scrapbox.io/files/6341188f22fcc600207647a3.png
ショートカット記法として、次のような記法を利用できる
code:sequence-shortcut.puml
@startuml
activate A
A -> B ++ : メッセージ
A -> B -- : メッセージ
B -> C ** : 作成
B -> C !! : 破棄
@enduml
↓
https://scrapbox.io/files/63411d2e3e46df0021cb181d.png
分類子の作成
createで分類子を作成できる
code:sequence-create-classfier.puml
@startuml
autoactivate on
A -> B : メッセージ
B -> C : メッセージ
create D
C -> D : 作成
return メッセージ
return メッセージ
return メッセージ
@enduml
↓
https://scrapbox.io/files/63411b981cf623001d45d2fc.png